#include <iostream>
#include <sstream>
#include <stack>
#include <string>
using namespace std;
// 定义树节点结构体
struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr)
    {
    }
};

// 定义链表节点结构体
struct ListNode
{
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(nullptr)
    {
    }
};

class Main
{
  public:
    // 处理字符串替换
    void getNums(const std::string &s)
    {
        std::stringstream ss;
        for (char ch : s)
        {
            if (ch == '[')
            {
                ss << '{';
            }
            else if (ch == ']')
            {
                ss << '}';
            }
            else if (ch == '"')
            {
                ss << '\'';
            }
            else
            {
                ss << ch;
            }
        }
        std::cout << ss.str() << std::endl;
    }

    // 定义两个栈用于实现最小栈
    std::stack<int> stack1;
    std::stack<int> stack2;

    // 入栈操作
    // 将元素压入栈中
    void push(int node)
    {
        stack1.push(node);
        if (stack2.empty() || stack2.top() > node)
        {
            stack2.push(node);
        }
        else
        {
            stack2.push(stack2.top());
        }
    }

    // 出栈操作
    void pop()
    {
        stack1.pop();
        stack2.pop();
    }

    // 获取栈顶元素
    int top()
    {
        return stack1.top();
    }

    // 获取栈中最小值
    int min()
    {
        return stack2.top();
    }
};

// 定义一个解决方案类，用于实现包含最小值功能的栈
class Solution
{
  public:
    // 将元素压入栈中
    void push(int value)
    {
        st.push(value);
        if (mem.empty() || mem.top() > value)
            mem.push(value);
        else
            mem.push(mem.top());
    }
    // 出栈操作
    void pop()
    {
        st.pop();
        mem.pop();
    }
    // 获取栈顶元素
    int top()
    {
        return st.top();
    }
    // 获取栈中最小值
    int min()
    {
        return mem.top();
    }

  private:
    stack<int> st;//主栈
    stack<int> mem;//辅助栈
};
// 主函数，用于测试
int main()
{
    Main mainObj;
    return 0;
}